home *** CD-ROM | disk | FTP | other *** search
/ Speccy ClassiX 1998 / Speccy ClassiX 98.iso / amiga_system / the_aminet / dev / gcc / ixemulsrc.lha / ixemul-41.4 / library / getcrap.c < prev    next >
C/C++ Source or Header  |  1995-09-27  |  4KB  |  180 lines

  1. /*
  2.  *  This file is part of ixemul.library for the Amiga.
  3.  *  Copyright (C) 1991, 1992  Markus M. Wild
  4.  *  Portions Copyright (C) 1994 Rafael W. Luebbert
  5.  *
  6.  *  This library is free software; you can redistribute it and/or
  7.  *  modify it under the terms of the GNU Library General Public
  8.  *  License as published by the Free Software Foundation; either
  9.  *  version 2 of the License, or (at your option) any later version.
  10.  *
  11.  *  This library is distributed in the hope that it will be useful,
  12.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  *  Library General Public License for more details.
  15.  *
  16.  *  You should have received a copy of the GNU Library General Public
  17.  *  License along with this library; if not, write to the Free
  18.  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  *
  20.  *  $Id: getcrap.c,v 1.2 1994/06/19 14:04:21 rluebbert Exp $
  21.  *
  22.  *  $Log: getcrap.c,v $
  23.  * Revision 1.2  1994/06/19  14:04:21  rluebbert
  24.  * Appeasing HWGRCS
  25.  *
  26.  * Revision 1.1  1994/06/19  14:02:22  rluebbert
  27.  * Initial revision
  28.  *
  29.  *
  30.  */
  31.  
  32.  
  33. /* stubs for group-file access functions */
  34.  
  35. #define KERNEL
  36. #include "ixemul.h"
  37. #include "kprintf.h"
  38. #include <stdlib.h>
  39.  
  40. int
  41. getpid()
  42. {
  43.   return (int) FindTask (0);
  44. }
  45.  
  46.  
  47. int
  48. getpgrp(int pid)
  49. {
  50.   /* this could change later.. but we'll see .. */
  51.   return pid ? pid : (int) FindTask(0);
  52. }
  53.  
  54.  
  55. int
  56. getgroups(int gidsetlen, int *gidset)
  57. {
  58.   /* we return 1 group, group 0 (you really ARE root on the amiga:-)) */
  59.   if (gidsetlen >= 1)
  60.     {
  61.       *gidset = 0;
  62.       return 1;
  63.     }
  64.  
  65.   errno = EINVAL;
  66.   KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  67.   return -1;
  68. }
  69.  
  70. int
  71. getrusage (int who, struct rusage *rusage)
  72. {
  73.   if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN)
  74.     {
  75.       errno = EINVAL;
  76.       KPRINTF (("&errno = %lx, errno = %ld\n", &errno, errno));
  77.       return -1;
  78.     }
  79.  
  80.   *rusage = (who == RUSAGE_SELF) ? u.u_ru : u.u_cru;
  81.   return 0;
  82. }
  83.  
  84. #include <grp.h>
  85.  
  86. struct group *
  87. getgrgid (gid_t gid)
  88. {
  89.   static char *end = 0;
  90.   static struct group grp = { "amiga", "*", 0, & end };
  91.  
  92.   return &grp;
  93. }
  94.  
  95. struct group *
  96. getgrnam (const char *name)
  97. {
  98.   static char *end = 0;
  99.   static struct group grp = { "amiga", "*", 0, & end };
  100.  
  101.   return &grp;
  102. }
  103.  
  104. #include <pwd.h>
  105.  
  106. struct passwd *
  107. getpwuid (uid_t uid)
  108. {
  109.   char *home = getenv("HOME");
  110.   char *user = getenv("USER");
  111.   static struct passwd pw = { NULL,         /* pw_name */
  112.                   "*",        /* pw_passwd */
  113.                   0,        /* pw_uid */
  114.                   0,        /* pw_gid */
  115.                   0,         /* pw_change */
  116.                   0,        /* pw_class */
  117.                   "amiga user",    /* pw_gecos */
  118.                   NULL,        /* pw_dir */
  119.                   "/bin/sh",     /* pw_shell */
  120.                   0};        /* pw_expire */
  121.  
  122.   /* see getpwnam() */
  123.   if (home)
  124.     pw.pw_dir = home;
  125.   else
  126.     pw.pw_dir = "/sys";
  127.   if (user)
  128.     pw.pw_name = user;
  129.   else
  130.     pw.pw_name = "amiga";
  131.   pw.pw_uid = uid;
  132.   return &pw;
  133. }
  134.  
  135. struct passwd *
  136. getpwnam (const char *name)
  137. {
  138.   char *home;
  139.   static struct passwd pw = { 0,         /* pw_name */
  140.                   "*",        /* pw_passwd */
  141.                   0,        /* pw_uid */
  142.                   0,        /* pw_gid */
  143.                   0,         /* pw_change */
  144.                   0,        /* pw_class */
  145.                   "amiga user",    /* pw_gecos */
  146.                   NULL,        /* pw_dir */
  147.                   "/bin/sh",     /* pw_shell */
  148.                   0};        /* pw_expire */
  149.  
  150.   /* this is not quite safe, since this library function could be called
  151.    * in parallel with different names.. well, I don't consider this worth
  152.    * doing `right', it's here to be able to link some programs ;-) */
  153.   pw.pw_name = (char *) name;
  154.   if (home = getenv("HOME"))
  155.     pw.pw_dir = home;
  156.   else
  157.     pw.pw_dir = "/sys";
  158.  
  159.   return &pw;
  160. }
  161.  
  162. static char hostname[255] = "amiga";
  163.  
  164. int
  165. gethostname (char *name, int namelen)
  166. {
  167.   strncpy (name, hostname, namelen);
  168.   return 0;
  169. }
  170.  
  171. int
  172. sethostname (char *name, int namelen)
  173. {
  174.   int len = namelen < sizeof (hostname) - 1 ? namelen : sizeof (hostname) - 1;
  175.  
  176.   strncpy (hostname, name, len);
  177.   hostname[len] = 0;
  178.   return 0;
  179. }
  180.